package com.lilong.jwt.common.base;

import com.lilong.jwt.entity.user.User;
import com.lilong.jwt.pojo.query.RequestBean;
import com.lilong.jwt.pojo.view.PageBean;

import java.util.List;

/**
 * 定义基本服务接口
 * @param <T>
 */
public interface BaseService<T extends BaseEntity> {
    /**
     * 保存实体
     *
     * @param t
     * @return
     */
    T saveEntity(T t, User operator);

    /**
     * 批量保存实体
     *
     * @param t
     */
    void batchSaveEntity(List<T> t,User operator);

    /**
     * 删除实体
     *
     */
    int batchRemoveEntity(List<Long> ids);
    int removeEntity(Long id);

    /**
     * 更新实体
     *
     * @param t
     * @return
     */
    int updateEntity(T t,User operator);

    /**
     * 根据ID查找实体
     *
     * @param id
     * @return
     */
    T findById(Long id);

    /**
     * 根据条件查询实体
     *
     * @param t
     * @return
     */
    List<T> query(T t);

    /**
     * 分页查询实体数据
     *
     * @param t
     * @return
     */
    PageBean<T> queryByPage(RequestBean<T> t);
}
